Register Names
The following is a list of register names for x86-64 assembly
| Base Label | Labels for Lower n-bits of a Register | Additional Info | |||
|---|---|---|---|---|---|
| 8-bit | 16-bit | 32-bit | 64-bit | ||
| a | al | ax | eax | rax | a for accumulator |
| b | bl | bx | ebx | rbx | b for base |
| c | cl | cx | ecx | rcx | c for counter |
| d | dl | dx | edx | rdx | d for data |
| si | sil | si | esi | rsi | source index |
| di | dil | di | edi | rdi | destination index |
| bp | bpl | bp | ebp | rbp | stack base pointer |
| sp | spl | sp | esp | rsp | stack pointer (end position of runtime stack) |
| r8 | r8b | r8w | r8d | r8 | |
| r9 | r9b | r9w | r9d | r9 | |
| r10 | r10b | r10w | r10d | r10 | |
| r11 | r11b | r11w | r11d | r11 | |
| r12 | r12b | r12w | r12d | r12 | |
| r13 | r13b | r13w | r13d | r13 | |
| r14 | r14b | r14w | r14d | r14 | |
| r15 | r15b | r15w | r15d | r15 | |
Additional Notes:
In the 8-bit column for the first 8 register, l stands for low or lower. You can actually address the upper 8-bits of the lower 16-bits with h.
In the 4 central columns for registers r8 through r15, the letter b stands for byte (8-bits being addressed), w for word (there was a time where most machines had a word size of 16 bits, that is, this is a legacy holdover from that time), and d for double word (32-bits is twice 16-bits).
There are some additional registers outside of the 16 mentioned above, that is the ip, or instruction pointer register, and then the status flags.